<?php
declare(strict_types=1);

namespace app\validate;

use think\Validate;

class BaseValidate extends Validate
{
    /**
     * 手机号验证规则
     */
    protected function isMobile($value): bool
    {
        $rule = '/^1[3-9]\d{9}$/';
        $result = preg_match($rule, $value);
        if ($result) {
            return true;
        }
        return false;
    }

    /**
     * 正整数验证
     */
    protected function isPositiveInteger($value): bool
    {
        if (is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
            return true;
        }
        return false;
    }

    /**
     * 验证日期格式
     */
    protected function isDate($value): bool
    {
        $pattern = '/^\d{4}-\d{2}-\d{2}$/';
        if (!preg_match($pattern, $value)) {
            return false;
        }
        return strtotime($value) !== false;
    }

    /**
     * 验证时间格式
     */
    protected function isTime($value): bool
    {
        $pattern = '/^\d{2}:\d{2}:\d{2}$/';
        if (!preg_match($pattern, $value)) {
            return false;
        }
        return strtotime("2000-01-01 {$value}") !== false;
    }

    /**
     * 验证金额格式
     */
    protected function isMoney($value): bool
    {
        if (!is_numeric($value)) {
            return false;
        }
        return preg_match('/^\d+(\.\d{1,2})?$/', $value) === 1;
    }

    /**
     * 验证身份证号
     */
    protected function isIdCard($value): bool
    {
        $pattern = '/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i';
        return preg_match($pattern, $value) === 1;
    }
} 